package com.eastfair.imaster.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperCacheService;
import com.eastfair.imaster.dto.SpeakerDTO;
import com.eastfair.imaster.dto.SpeakerPageQuery;
import com.eastfair.imaster.entity.Speaker;
import com.eastfair.imaster.vo.SpeakerVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 嘉宾
 * </p>
 *
 * @author zjn
 * @date 2021-08-31
 */
public interface SpeakerService extends SuperCacheService<Speaker> {

    /**
     * 删除嘉宾
     *
     * @param id 主键
     * @return 是否删除成功
     */
    Boolean deleteById(Long id);

    /**
     * 修改嘉宾
     *
     * @param speakerDTO 嘉宾实体
     * @return 是否修改成功
     */
    Boolean updateById(SpeakerDTO speakerDTO);

    /**
     * 通过id 获取嘉宾对象
     *
     * @param id 实体id
     * @return 嘉宾对象
     */
    SpeakerVO queryById(Long id);

    /**
     * 分页嘉宾列表
     *
     * @param params 分页条件
     * @return 分页嘉宾列表
     */
    Page<SpeakerVO> queryPageList(PageParams<SpeakerPageQuery> params);

    /**
     * 获取嘉宾列表
     *
     * @param speakerDTO 过滤条件
     * @return 嘉宾列表
     */
    List<SpeakerVO> queryList(SpeakerDTO speakerDTO);

    /**
     * 通过id集合以及排序方式获取嘉宾列表
     *
     * @param idList        嘉宾id集合
     * @param sortOrderType 排序方式
     * @return 嘉宾列表
     */
    List<SpeakerVO> getByIdList(List<Long> idList, String sortOrderType);

    /**
     * 通过id集合以及排序方式获取嘉宾列表
     *
     * @param params        分页详情
     * @param idList        嘉宾id集合
     * @param sortOrderType 排序方式
     * @return 嘉宾列表
     */
    Page<SpeakerVO> getPageByIdList(PageParams<SpeakerPageQuery> params, List<Long> idList, String sortOrderType);

}
